const {dtk_search} = require('../utils/dtkApi');
const RespFmt = require('../utils/RespFmt');
const TaoBao = require('../utils/TaoBao');
const serverConfig = require("../server.config");
const pageMiddleWare = require("../middleWare/page.middleware");

// console.log(result_list.map(item => ({
//     '店铺DSR评分': item.shop_dsr,
//     '商品名称': item.title,
//     '淘客30天推广量': item.tk_total_sales,
//     '商品一口价格': item.reserve_price,
//     '商品折扣价': item.zk_final_price,
//     '佣金比率。1550表示15.5%': item.commission_rate,
//     '预计佣金': (item.zk_final_price * item.commission_rate).toFixed(2),
//     '优惠信息': item.coupon_info,
//     '是否是热门商品': item.hot_flag,
// })))

/**
 * @function list
 * @desc  淘宝联盟接口 作为获取商品列表的回调函数 同时也负责向客户端发送页面
 * @param {any} req
 * @param {any} res
 * @returns {any}
 */
async function list(req, res) {

    let {page_no, page_size, q, has_coupon, sort} = req.query
    pageMiddleWare(req,res,page_no, page_size, q, has_coupon, sort)
    try {
        let {result_list} = await TaoBao.getRecommendList({page_no, page_size,q, has_coupon, sort,material_id:"39313",deviceInfo:{}});
        result_list.page_title = q ? `关于${q}的商品列表` : `默认商品列表`
        res.render('list.ejs', {couponObj: result_list}) //这里 商品列表
    } catch (error) {
        res.send(RespFmt.faild(error))
    }
}

/**
 * @function list2
 * Description  大淘客搜索接口 作为获取商品列表的回调函数 同时也负责向客户端发送页面
 * @param {any} req
 * @param {any} res
 * @param next
 * @returns {any}
 */
async function list2(req, res, next) {
    let {type, keyWords, pageId, pageSize, sort, haitao, tmall, hasCoupon, priceUpperLimit, priceLowerLimit} = req.query

    if (Object.values(req.query).length === 0) {
        let defaultParams = {
            type: 0,
            keyWords: '最右',
            pageId: 1,
            pageSize: 66,
            sort: 0,
            haitao: 0,
            tmall: 0,
            hasCoupon: 0,
        }
        let keys = Object.keys(defaultParams);
        let values = Object.values(defaultParams);
        let str = []
        for (let i = 0; i < keys.length; i++) {
            const key = keys[i];
            str.push(key + '=' + values[i])
        }
        await res.redirect(`/list2/?${str.join('&')}`)
    }
    let p = {type, keyWords, pageId, pageSize, sort, haitao, tmall, hasCoupon, priceUpperLimit, priceLowerLimit}

    let results;
    try {
        results = await dtk_search(...Object.values(p).filter(item => item !== undefined))
        //带搜索框和筛选器的组件

        await res.render('dtk/search/index.html')
        await res.send({
            query: req.query,
            data: results?.data || [123]
        })
    } catch (e) {
        console.log(e);
        await next({
            query: req.query,
            data: e
        })
    }
}


async function search(req, res) {
    let {page_no, page_size, q, has_coupon, sort} = {...serverConfig.defaultParamsConfig, ...req.query}
    pageMiddleWare(req, res, page_no, page_size, q, has_coupon, sort)
    try {
        console.log(page_size)
        let {result_list} = await TaoBao.searchByKeyWord(q, page_no, page_size, has_coupon, sort);
        result_list.page_title = q ? `关于${q}的商品列表` : `默认商品列表`
        res.render('search.ejs', {couponObj: result_list}) //这里 商品列表
    } catch (error) {
        res.send(RespFmt.faild(error))
    }
}

module.exports = {list, list2,search}
